package ai.leinao.notify.core.template;

import ai.leinao.notify.core.enums.DataType;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.Map;

/**
 * 变量定义
 *
 * @author zhong.wang
 * @date 2025/7/7
 */
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class VariableDefinition {
    /**
     *  id
     */
    private String id;

    /**
     * 名称
     */
    private String name;

    /**
     * 描述
     */
    private String description;

    /**
     *  数据类型
     */
    private String type;

    /**
     * 默认值
     */
    private String defaultValue;

    /**
     * 格式
     */
    private String format;

    /**
     * 扩展属性
     */
    private Map<String, Object> expands;

    /**
     * 是否必填
     */
    private boolean required;


    public String convertValue(Object value) {
        if (value == null) {
            value = defaultValue;
        }
        //必填
        if (this.required && value == null) {
            throw new IllegalArgumentException("error.template_var_required");
        }
        DataType dataType = DataType.getDataType(type);
        String fmt = format;
        Object val = value;
        //为null时返回空字符
        if (val == null) {
            return "";
        }
        if(dataType == DataType.STRING){
            val = String.valueOf(value);
        }else if(dataType == DataType.DATE){

        }
        return String.format(fmt, val);
    }
}
